/**
* Copyright (c) By zengqh.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2012/11/08
* File: EnnStdHeader.h
* Blog: http://www.cnblogs.com/zengqh/
**/

#ifndef EnnStdHeader_h__
#define EnnStdHeader_h__

#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <cstdarg>
#include <cmath>
#include <utility>

// STL containers
#include <vector>
#include <map>
#include <string>
#include <set>
#include <list>
#include <deque>
#include <queue>
#include <bitset>

// STL algorithms & functions
#include <algorithm>
#include <functional>
#include <limits>

// C++ Stream stuff
#include <fstream>
#include <iostream>
#include <iomanip>
#include <sstream>

extern "C" {

#   include <sys/types.h>
#   include <sys/stat.h>

}


#if ENN_PLATFORM == ENN_PLATFORM_LINUX
#include <tr1/unordered_map>
#include <tr1/unordered_set>
#endif

#if ENN_PLATFORM == ENN_PLATFORM_WINDOWS
#include <hash_set>
#include <hash_map>
#endif

#if ENN_PLATFORM == ENN_PLATFORM_LINUX || ENN_PLATFORM == ENN_PLATFORM_ANDROID
extern "C" 
{
#   include <unistd.h>
#   include <dlfcn.h>
}
#endif

#if ENN_PLATFORM == ENN_PLATFORM_WINDOWS
#undef min
#undef max
#endif

#endif